<?php
	include("../php/handler.php");
	include("../php/scheduler.php");
	include("../php/result.php");
	$bts_scheduler = new scheduler();
	$bts_handler = new handler();
	$bts_handler->connect();
	$bts_handler->delete_old();
	
	$fehlerDummy = '';
	$fehlerRandom = '';
	$fehlerRR = '';
	$fehlerScheduler = '';
	$fehler = false;
	
	if (isset($_POST['senden'])){
		if ($_POST['senden'] == 'Speichern'){
			if (isset($_POST['name'])&& !is_array($_POST['name'])  && $_POST['name'] == ''){
				$fehlerDummy .= '<a>Bitte geben Sie einen Namen ein.</a><br />';
				$fehler = true; 
			}
			
			if (!(isset($_POST['cpulaufzeit']) && !is_array($_POST['cpulaufzeit']) && $_POST['cpulaufzeit'] != '' &&($_POST['cpulaufzeit']+0) > 0 &&($_POST['cpulaufzeit']+0) < 501)){
				$fehlerDummy .= '<a>Bitte geben Sie eine CPU Laufzeit von 0 bis max.500 ein. </a><br />';
				$fehler = true;
			}
			
			if (!(isset($_POST['ankunftszeit']) && !is_array($_POST['ankunftszeit']) && $_POST['ankunftszeit'] != '' &&($_POST['ankunftszeit']+0) > 0 &&($_POST['ankunftszeit']+0) < 101)){
				$fehlerDummy .= '<a>Bitte geben Sie eine Ankunfzeit von 1 bis max.100 ein. </a><br />';
				$fehler = true;
			}
			
			if (!(isset($_POST['prioritaet']) && !is_array($_POST['prioritaet']) && $_POST['prioritaet'] != '' &&($_POST['prioritaet']+0) > 0 &&($_POST['prioritaet']+0) < 101)){
				$fehlerDummy .= '<a>Bitte geben Sie eine Priorität von 0 bis max.100 ein. </a><br />';
				$fehler = true;
			}
			
			if ($fehler == false){
				$bts_handler->create_process(htmlspecialchars($_POST['name']), htmlspecialchars($_POST['cpulaufzeit']), htmlspecialchars($_POST['ankunftszeit']), htmlspecialchars($_POST['prioritaet']));
			}
		} else if ($_POST['senden'] == 'Hinzufügen'){
			if( isset($_POST['anzahl'])&& !is_array($_POST['anzahl']) && $_POST['anzahl'] != '' && ($_POST['anzahl']+0) > 0 && ($_POST['anzahl']+0) < 1001){
				$bts_handler->random_processes($_POST['anzahl']);
			}else {
				$fehlerRandom = 'Die Zahl muss 1 bis 1000 sein.';	
			}
		} else if ($_POST['zuruecksetzenD'] == 'Zurücksetzen'){
			$_POST['name']='';
			$_POST['cpulaufzeit']='';
			$_POST['ankunfzeit']='';
			$_POST['prioritaet']='';
			$_POST['anzahl']='';
		}else if ($_POST['zuruecksetzenR'] == 'Zurücksetzen'){
			$_POST['anzahl']='';
		}
	}
	
	if ($_POST['loeschen'] == 'Liste löschen'){
			$bts_handler->reset_processlist();
	}
		
	if (isset($_POST['scheduler']) && !is_array($_POST['scheduler'])) {
		if($_POST['scheduler'] == 'Round Robing RR'){
			if (isset($_POST['quantum']) && !is_array($_POST['quantum']) && $_POST['quantum'] != '' &&($_POST['quantum']+0) > 0 &&($_POST['quantum']+0) < 40){
				$result = $bts_scheduler->RoundRobin($bts_handler, $_POST['quantum'] );
			}else {
				$fehlerRR = '<a>Das Quantum muss zwischen 1ms und 40ms sein.</a><br />';
			}
			if (!isset($bts_result)){
				$fehlerScheduler = '<a>Es gab ein fehler in den Sheduling Verfahren</a>';
			}
		} else if ($_POST['scheduler'] == 'First Come First Served FCFS'){
			$result = $bts_scheduler->FirstComeFirstServed($bts_handler);
			if (!isset($bts_result)){
				$fehlerScheduler = '<a>Es gab ein fehler in den Sheduling Verfahren</a>';
			}
		} else if ($_POST['scheduler'] == 'Shortest Job First SJF'){
			$result = $bts_scheduler->ShortestJobFirst($bts_handler);
			if (!isset($bts_result)){
				$fehlerScheduler = '<a>Es gab ein fehler in den Sheduling Verfahren</a>';
			}
		} else if ($_POST['scheduler'] == 'Longest Job First LJF'){
			$result = $bts_scheduler->LongestJobFirst($bts_handler);
			if (!isset($bts_result)){
				$fehlerScheduler = '<a>Es gab ein fehler in den Sheduling Verfahren</a>';
			}
		} else if ($_POST['scheduler'] == 'Longest Remaining Time First LRTF'){
			$result = $bts_scheduler->LongestRemainingTimeFirst($bts_handler);
			if (!isset($bts_result)){
				$fehlerScheduler = '<a>Es gab ein fehler in den Sheduling Verfahren</a>';
			}
		} else if ($_POST['scheduler'] == 'Shortest Remaining Time First SRTF'){
			$result = $bts_scheduler->ShortestRemainingTimeFirst($bts_handler);
			if (!isset($bts_result)){
				$fehlerScheduler = '<a>Es gab ein fehler in den Sheduling Verfahren</a>';
			}
		}else if ($_POST['scheduler'] == 'Priorit&auml;tengesteuertes Scheduling PS'){
			$result = $bts_scheduler->PrioritaetengesteuertesScheduling($bts_handler);
			if (!isset($bts_result)){
				$fehlerScheduler = '<a>Es gab ein fehler in den Sheduling Verfahren</a>';
			}
		}
	}
?>
<!DOCTYPE HTML>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <title>BTS Creative Labs</title>
        <link href="../css/main.css" rel="stylesheet" type="text/css">
   		<script src="../script/Accordion.js" type="text/javascript"></script>
    	<link href="../css/Accordion.css" rel="stylesheet" type="text/css">
    </head>
    <body>
    <div id="wapper">
            <div id="head">
                <div id="banner">
                    <div id="instLogo">
                        <a href="http://www.informatik.hs-mannheim.de/"><img src="../media/images/Informatik Logo.jpg" width="260" height="90" alt="Fakultät Informatik Logo" longdesc="http://www.informatik.hs-mannheim.de/"></a>
                    </div>
                    <div id="fhLogo">
                        <a href="http://www.hs-mannheim.de"><img src="../media/images/fhlogo.jpg" width="165" height="91" alt="HS Mannheim Logo" longdesc="http://hs-mannheim.de"></a>
                    </div>
                </div>
                <div id="main-menue">
                    <img src="../media/images/mmbl.gif" width="38" height="61" alt="Banner Rand Linker metallern mit Schraube" id="schraubelinks">
                    <div id="nav">
                        <div id="first-nav">
                            <a class="unselected" href="../index.php">Home</a>
                            <a class="selected" href="#">Scheduling</a>
                            <a class="unselected" href="../seiten/info.html">Infos</a>
                        </div>
                    </div>
                    <img src="../media/images/mmbr.gif" width="38" height="61" alt="Banner Rand Rechts metallern mit Schraube" id="schrauberechts">
                </div>
            </div>
            <div id="contend">
                <div id="Accordion" class="Accordion" tabindex="0">
  					<div class="AccordionPanel">
    					<div class="AccordionPanelTab">Step 1 Add Processe</div>
    					<div class="AccordionPanelContent">
                        <h1>Prozess Dummys</h1>
            				<div id="custom">
            					<h1>Custom Add</h1>
            					<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="POST">
            						<div class="label">
                						<a>Name:</a><br />
                        				<a>CPU-Laufzeit:</a><br />
                        				<a>Priorit&auml;t:</a><br />
                        				<a>Ankunftszeit:</a><br />
                					</div>
               						<div class="input">
                						<input type="text" name="name" /><br />
                        				<input type="text" name="cpulaufzeit" /><br />
                        				<input type="text" name="prioritaet" /><br />
                        				<input type="text" name="ankunftszeit" /><br />
                					</div>
                					<div class="description">
                    					<a class="bsp">Bsp.: Prozess 1</a><br />
                						<a>ms</a><a class="bsp"> Bsp.: 25 ms, Zahlen von 0 bis 500 sind erlaubt. </a><br />
                        				<a class="bsp">Bsp.: 1 (kleinste) - 100 (gr&ouml;&szlig;te)</a><br />
                        				<a>ms</a><a class="bsp"> Bsp.: 50 ms, Zahlen von 1 bis 100 sind erlaubt. </a>
                					</div>
                    				<div class="end">
                						<input type="submit" name="senden" value="Speichern">
                                       	<input type="submit" name="zuruecksetzenD" value="Zur&uuml;cksetzen">
                    				</div>
                				</form>
                                <?php
                                	if ($fehler){
										echo '<div class="fehler"><h1>Fehler</h1>';
										echo $fehlerDummy .'</div>';
									}
								?>
                        	</div>
            				<div id="random">
            					<h1>Random Add</h1>
            					<form action="<? echo $_SERVER['PHP_SELF']?>" method="POST">
                					<div class="label">
                    					<a>Anzahl:</a><br />
                    				</div>
                    				<div class="input">
                    					<input type="text" name="anzahl"><br />
                    				</div>
                    				<div class="description">
                    					<a class="bsp">Prozesse Bsp.: 50 Prozesse(max. 1000)</a><br />
                    				</div>
                    				<div class="end">
                						<input type="submit" name="senden" value="Hinzuf&uuml;gen">
                                       	<input type="submit" name="zuruecksetzenR" value="Zur&uuml;cksetzen">
                    				</div>
                				</form>
                                <?php
                                	if ($fehlerRandom != ''){
										echo '<div class="fehler"><h1>Fehler</h1>';
										echo $fehlerRandom .'</div>';
									}
								?>
							</div>
							<div id="processlist">
								<h2>Prozessliste (evtl.Standartdatensatz)</h2>
								<?php
									$bts_handler->print_processes(); 
								?>
								<br />
								<form action="<? echo $_SERVER['PHP_SELF'] ?>" method="POST">
									<input type="submit" name="loeschen" value="Liste l&ouml;schen">
								</form>
							</div>
                        </div><!--AccordionPanelContent 1 ende-->
  					</div><!--AccordionPanelTab 1 ende -->
  					<div class="AccordionPanel">
    					<div class="AccordionPanelTab">Step 2 Sheduling Verfahren W&auml;hlen</div>
    					<div class="AccordionPanelContent">
                        	<p>Bitte W&auml;hlen Sie eine der Scheduling verfahren:</p>
                            <form action="<? echo $_SERVER['PHP_SELF'] ?>" method="POST">
                				 <a>Quantum: </a><input type="text" name="quantum" /> <input type="submit" name="Scheduling" value="Round Robing RR"><br />
                				<input type="submit" name="Scheduling" value="First Come First Served FCFS"><br />
                    			<input type="submit" name="Scheduling" value="Shortest Job First SJF"><br />
                   				<input type="submit" name="Scheduling" value="Longest Job First LJF"><br />
                    			<input type="submit" name="Scheduling" value="Longest Remaining Time First LRTF"><br />
                    			<input type="submit" name="Scheduling" value="Shortest Remaining Time First SRTF"><br />
                    			<input type="submit" name="Scheduling" value="Priorit&auml;tengesteuertes Scheduling PS"><br />
                            </form>
                            <?php
								if (($fehlerRR != '' || $fehlerScheduler != '') && isset($_POST['Scheduling']) ){
									echo '<div class="fehler"><h1>Fehler</h1>';
									echo $fehlerRR;
									echo $fehlerScheduler.'</div>';
								}
							?>
                        </div><!--AccordionPanelContent 2 ende-->
  					</div><!--AccordionPanelTab 2 ende -->
  					<div class="AccordionPanel">
    					<div class="AccordionPanelTab">Step 3 Ergebniss</div>
    					<div class="AccordionPanelContent">
                        	<div id="result">
                        		<div id="main-data">
                                <?php
									if (isset($bts_result)){
                        				echo '<a>Sheduling Verfahren:'.$bts_result->getSchedulingVerfahren().'</a><br />';
                        				echo '<a>Gesamtzeit der Processe:'.$bts_result->getNumberOfProcess().'</a><br />';
                        				echo '<a>H&ouml;chste Priorit&auml;t'. $bts_result->getHighestPri().'</a><br />';
                        				echo '<a>Niedrigste Priorit&auml;t'. $bts_result->getLowesPri().'</a>';
									}
                                   ?>                       
                        		</div>
                        		<div id="list-of-process">
                        			<table width="780" border="1" summary="Zeigt die Liste der Processe in der Reihenfolge die der Algorithmus geliefert hat.">
                            			<caption>
        									Liste der Processe
    									</caption>
                        				<?php
											if (isset($bts_result)){
                        						echo $bts_result->getTabelHead ();
                        						while ($bts_result->hasMore()){
                        							echo $bts_result->getNext();
                        						}
											}
										?>
									</table>
                        		</div><!--list-of-process ende-->
                        	</div><!--result ende-->
                        </div><!--AccordionPanelContent 3 ende-->
  					</div><!--AccordionPanelTab 3 ende-->
				</div><!--Accordion ende-->
            </div>
            <div id="fotter">
                <img src="../media/images/mmbl.gif" width="38" height="61" alt="Banner Rand Linker metallern mit Schraube" id="schraubelinks">
                <div id="fottershild">
                    <a>Copyright by Creativ Labs</a>
                </div>
                <img src="../media/images/mmbr.gif" width="38" height="61" alt="Banner Rand Rechts metallern mit Schraube" id="schrauberechts">
            </div>
        </div>
    	<script type="text/javascript">
			var Accordion = new Spry.Widget.Accordion("Accordion");
       	</script>
    </body>
</html>